Application program interface for network software platform

ABSTRACT

An application program interface (API) provides a set of functions for application developers who build Web applications on Microsoft Corporation&#39;s .NET™ platform.

RELATED APPLICATIONS

[0001] This application is a continuation of application Ser. No.09/902,936 entitled “Application Program Interface for Network SoftwarePlatform”, filed Jul. 10, 2001 (now abandoned).

[0002] This relates to the following six patents, all of which areincorporated herein by reference:

[0003] U.S. Pat. No. ______, entitled “Application Program Interface forNetwork Software Platform”, which issued ______ from application Ser.No. 09/902,811, filed Jul. 10, 2001. (Attorney's Docket No. MS1-862US)

[0004] U.S. Pat. No. ______, entitled “Application Program Interface forNetwork Software Platform”, which issued ______ from application Ser.No. 09/902,809, filed Jul. 10, 2001. (Attorney's Docket No. MS1-863US)

[0005] U.S. Pat. No. ______, entitled “Application Program Interface forNetwork Software Platform”, which issued ______ from application Ser.No. 09/902,560, filed Jul. 10, 2001. (Attorney's Docket No. MS1-864US)

[0006] U.S. Pat. No. ______, entitled “Application Program Interface forNetwork Software Platform”, which issued ______ from application Ser.No. 09/902,810, filed Jul. 10, 2001. (Attorney's Docket No. MS1-865US)

[0007] U.S. Pat. No. ______, entitled “Application Program Interface forNetwork Software Platform”, which issued ______ from application Ser.No. 09/902,812, filed Jul. 10, 2001. (Attorney's Docket No. MS1-866US)

[0008] U.S. Pat. No. ______, entitled “Application Program Interface forNetwork Software Platform”, which issued ______ from application Ser.No. 09/901,555, filed Jul. 10, 2001. (Attorney's Docket No. MS1-867US)

TECHNICAL FIELD

[0009] This invention relates to network software, such as Webapplications, and to computer software development of such networksoftware. More particularly, this i. invention relates to an applicationprogram interface (API) that facilitates use of a network softwareplatform by application programs and computer hardware.

BACKGROUND

[0010] Very early on, computer software came to be categorized as“operating system” software or “application” software. Broadly speaking,an application is software meant to perform a specific task for thecomputer user such as solving a mathematical equation or supporting wordprocessing. The operating system is the software that manages andcontrols the computer hardware. The goal of the operating system is tomake the computer resources available to the application programmerwhile at the same time, hiding the complexity necessary to actuallycontrol the hardware.

[0011] The operating system makes the resources available via functionsthat are collectively known as the Application Program Interface or API.The term API is also used in reference to a single one of thesefunctions. The functions are often grouped in terms of what resource orservice they provide to the application programmer. Application softwarerequests resources by calling individual API functions. API functionsalso serve as the means by which messages and information provided bythe operating system are relayed back to the application software.

[0012] In addition to changes in hardware, another factor driving theevolution of operating system software has been the desire to simplifyand speed application software development. Application softwaredevelopment can be a daunting task, sometimes requiring years ofdeveloper time to create a sophisticated program with millions of linesof code. For a popular operating system such as Microsoft Windows®,application software developers write thousands of differentapplications each year that utilize the operating system. A coherent andusable operating system base is required to support so many diverseapplication developers.

[0013] Often, development of application software can be made simpler bymaking the operating system more complex. That is, if a function may beuseful to several different application programs, it may be better towrite it once for inclusion in the operating system, than requiringdozens of software developers to write it dozens of times for inclusionin dozens of different applications. In this manner, if the operatingsystem supports a wide range of common functionality required by anumber of applications, significant savings in applications softwaredevelopment costs and time can be achieved.

[0014] Regardless of where the line between operating system andapplication software is drawn, it is clear that for a useful operatingsystem, the API between the operating system and the computer hardwareand application software is as important as efficient internal operationof the operating system itself.

[0015] Over the past few years, the universal adoption of the Internet,and networking technology in general, has changed the landscape forcomputer software developers. Traditionally, software developers focusedon single-site software applications for standalone desktop computers,or LAN-based computers that were connected to a limited number of othercomputers via a local area network (LAN). Such software applicationswere typically referred to as “shrink wrapped” products because thesoftware was marketed and sold in a shrink-wrapped package. Theapplications utilized well-defined APIs to access the underlyingoperating system of the computer.

[0016] As the Internet evolved and gained widespread acceptance, theindustry began to recognize the power of hosting applications at varioussites on the World Wide Web (or simply the “Web”). In the networkedworld, clients from anywhere could submit requests to server-basedapplications hosted at diverse locations and receive responses back infractions of a second. These Web applications, however, were typicallydeveloped using the same operating system platform that was originallydeveloped for standalone computing machines or locally networkedcomputers. Unfortunately, in some instances, these applications do notadequately transfer to the distributed computing regime. The underlyingplatform was simply not constructed with the idea of supportinglimitless numbers of interconnected computers.

[0017] To accommodate the shift to the distributed computing environmentbeing ushered in by the Internet, Microsoft Corporation is developing anetwork software platform known as the “.NET” platform (read as “DotNet”). The platform allows developers to create Web services that willexecute over the Internet. Such a dynamic shift requires a new ground-updesign of an entirely new API.

[0018] In response to this challenge, the inventors developed a uniqueset of API functions for Microsoft's .NET™ platform.

SUMMARY

[0019] An application program interface (API) provides a set offunctions for application developers who build Web applications on anetwork platform, such as Microsoft Corporation's .NET™ platform.

BRIEF DESCRIPTION OF THE DRAWINGS

[0020] The same numbers are used throughout the drawings to referencelike features.

[0021]FIG. 1 illustrates a network architecture in which clients accessWeb services over the Internet using conventional protocols.

[0022]FIG. 2 is a block diagram of a software architecture forMicrosoft's .NTM™ platform, which includes an application programinterface (API).

[0023]FIG. 3 is a block diagram of unique namespaces supported by theAPT, as well as function classes of the various API functions.

[0024]FIG. 4 is a block diagram of an exemplary computer that mayexecute all or part of the software architecture.

BRIEF DESCRIPTION OF ACCOMPANYING COMPACT DISC

[0025] Accompanying this specification is a duplicative set of compactdiscs, identified as “Copy 1” and “Copy 2”. Each disc stores a compiledHTML help file identifying the API (application program interface) forMicrosoft's .NET™ network platform. The file is named “cpref.chm” andwas created on Jun. 8, 2001. It is 30.81 Mbytes in size. The file can beexecuted on a Windows®-based computing device (e.g., IBM-PC, orequivalent) that executes a Windows®-brand operating system (e.g.,Windows® NT, Windows® 98, Windows® 2000, etc.). The compiled HTML helpfile stored on the compact disc is hereby incorporated by reference. Thecompact disc itself is a CD-ROM, and conforms to the ISO 9660 standard.

[0026] Additionally, each compact disc stores 94 separate text filesnamed “NamespaceName.txt” which contain the APIs listed in the compiledHTML help file. The text files comply with the ASCII format and may beread using a Windows®-based computing device (e.g., IBM-PC, orequivalent) that executes a Windows®-brand operating system (e.g.,Windows® NT, Windows® 98, Windows® 2000, etc.). The text files stored onthe compact disc are hereby incorporated by reference.System.Windows.Forms.txt 2,463,923 Jul. 6, 2001System.CodeDom.Compiler.txt 163,205 Jul. 6, 2001System.ComponentModel.Design.txt 229,762 Jul. 6, 2001System.Configuration.Assemblies.txt 6,457 Jul. 6, 2001System.ComponentModel.txt 534,420 Jul. 6, 2001System.ComponentModel.Design.Serialization. 56,951 Jul. 6, 2001 txtSystem.Configuration.txt 24,160 Jul. 6, 2001 System.txt 1,372,604 Jul.6, 2001 System.Net.txt 284,291 Jul. 6, 2001 System.Collections.txt177,639 Jul. 6, 2001 System.Globalization.txt 331,753 Jul. 6, 2001System.Net.Sockets.txt 137,612 Jul. 6, 2001System.Collections.Specialized.txt 99,154 Jul. 6, 2001System.Xml.Schema.txt 122,405 Jul. 6, 2001 System.Xml.Serialization.txt224,452 Jul. 6, 2001 System.Xml.XPath.txt 56,553 Jul. 6, 2001System.Xml.txt 416,578 Jul. 6, 2001 System.Xml.Xsl.txt 3,552 Jul. 6,2001 System.Data.Common.txt 114,227 Jul. 7, 2001 System.Data.OleDb.txt155,509 Jul. 7, 2001 System.Data.SqlClient.txt 121,455 Jul. 7, 2001System.Data.SqlTypes.txt 352,862 Jul. 7, 2001 System.Diagnostics.txt399,479 Jul. 7, 2001 System.DirectoryServices.txt 98,856 Jul. 7, 2001System.Drawing.Design.txt 89,887 Jul. 7, 2001System.Drawing.Drawing2D.txt 212,421 Jul. 7, 2001 System.Reflection.txt298,065 Jul. 7, 2001 System.Drawing.txt 702,023 Jul. 7, 2001System.Drawing.Imaging.txt 232,591 Jul. 7, 2001System.Drawing.Printing.txt 142,134 Jul. 7, 2001 System.Drawing.Text.txt8,501 Jul. 7, 2001 System.EnterpriseServices.txt 138,609 Jul. 8, 2001System.IO.txt 308,389 Jul. 7, 2001 System.Resources.txt 70,121 Jul. 7,2001 System.IO.IsolatedStorage.txt 56,779 Jul. 7, 2001System.Messaging.txt 342,690 Jul. 7, 2001 System.Reflection.Emit.txt352,613 Jul. 7, 2001 System.Runtime.CompilerServices.txt 20,020 Jul. 7,2001 System.Runtime.InteropServices.Expando.txt 1,497 Jul. 7, 2001System.Runtime.InteropServices.txt 389,509 Jul. 7, 2001System.Runtime.Remoting.Activation.txt 12,595 Jul. 7, 2001System.Runtime.Remoting.Channels.txt 116,351 Jul. 7, 2001System.Runtime.Remoting.Channels.Http.txt 36,192 Jul. 7, 2001System.Runtime.Remoting.Channels.Tcp.txt 24,032 Jul. 7, 2001System.Runtime.Remoting.Contexts.txt 43,554 Jul. 7, 2001System.Runtime.Remoting.txt 112,724 Jul. 7, 2001System.Runtime.Remoting.Lifetime.txt 14,216 Jul. 7, 2001System.Runtime.Remoting.Messaging.txt 69,733 Jul. 7, 2001System.Runtime.Remoting.Metadata.txt 10,824 Jul. 7, 2001System.Runtime.Remoting.Metadata. 58,782 Jul. 7, 2001 W3cXsd2001.txtSystem.Runtime.Remoting.MetadataServices. 15,165 Jul. 7, 2001 txtSystem.Runtime.Remoting.Proxies.txt 12,034 Jul. 7, 2001System.Runtime.Remoting.Services.txt 13,600 Jul. 7, 2001System.Runtime.Serialization.Formatters. 9,694 Jul. 7, 2001 Binary.txtSystem.Runtime.Serialization.Formatters.txt 16,288 Jul. 7, 2001System.Runtime.Serialization.txt 122,559 Jul. 7, 2001System.Runtime.Serialization.Formatters.Soap. 9,712 Jul. 7, 2001 txtSystem.Security.Cryptography.txt 250,786 Jul. 7, 2001System.Security.Cryptography.X509 26,564 Jul. 7, 2001 Certificates.txtSystem.Configuration.Install.txt 57,485 Jul. 8, 2001System.Security.Permissions.txt 206,364 Jul. 7, 2001 System.Security.txt83,229 Jul. 7, 2001 System.Security.Policy.txt 162,414 Jul. 7, 2001System.Text.txt 130,394 Jul. 7, 2001 System.Security.Principal.txt27,479 Jul. 7, 2001 System.ServiceProcess.txt 77,072 Jul. 7, 2001System.Text.RegularExpressions.txt 76,478 Jul. 7, 2001System.Threading.txt 111,902 Jul. 7, 2001 System.Timers.txt 10,381 Jul.7, 2001 System.Windows.Forms.Design.txt 168,099 Jul. 7, 2001System.Web.txt 237,045 Jul. 9, 2001 System.Diagnostics.SymbolStore.txt51,472 Jul. 8, 2001 System.Management.txt 255,522 Jul. 8, 2001System.Management.Instrumentation.txt 14,199 Jul. 8, 2001System.Web.Caching.txt 26,389 Jul. 9, 2001 System.Web.Configuration.txt7,820 Jul. 9, 2001 System.Web.Hosting.txt 13,234 Jul. 9, 2001System.Web.Mail.txt 11,187 Jul. 9, 2001 System.Web.Security.txt 77,598Jul. 9, 2001 System.Web.Services.txt 20,955 Jul. 9, 2001System.Web.Services.Configuration.txt 8,242 Jul. 9, 2001System.Web.Services.Description.txt 215,516 Jul. 9, 2001System.Web.Services.Discovery.txt 80,061 Jul. 9, 2001System.Web.Services.Protocols.txt 171,896 Jul. 9, 2001System.Web.SessionState.txt 5,064 Jul. 9, 2001 System.Web.UI.txt 254,142Jul. 9, 2001 System.Web.UI.Design.txt 120,182 Jul. 9, 2001System.Web.UI.Design.WebControls.txt 77,222 Jul. 9, 2001System.Web.UI.HtmlControls.txt 62,508 Jul. 9, 2001System.Web.UI.WebControls.txt 607,903 Jul. 9, 2001 System.CodeDom.txt233,760 Jul. 9, 2001 System.Data.txt 440,804 Jul. 9, 2001System.EnterpriseServices.Compensating 24,077 Jul. 9, 2001ResourceManager.txt System.Security.Cryptography.Xml.txt 86,585 Jul. 9,2001

[0027] Also, each compact disc stores a file entitled “Common LanguageRuntime Specification” that contains the following Word® documents,their sizes, and date of creation: Document Format Information 1 KB Jul.9, 2001 Glossary 80 KB May 17, 2001 Partition I Architecture 3,350 KBMay 17, 2001 Partition II Metadata 10,494 KB May 17, 2001 Partition IIICIL 1,107 KB May 17, 2001 Partition IV Library 1,332 KB May 17, 2001Partition V Annexes 1,036 KB May 17, 2001 WDO5-Review 4,690 KB May 17,2001

[0028] The Common Language Runtime Specification (inclusive of alldocuments above) is incorporated by reference.

DETAILED DESCRIPTION

[0029] This disclosure addresses an application program interface (API)for a network platform upon which developers can build Web applicationsand services. More particularly, an exemplary API is described for the.NET™ platform created by Microsoft Corporation. The .NET™ platform is asoftware platform for Web services and Web applications implemented inthe distributed computing environment. It represents the next generationof Internet computing, using open communication standards to communicateamong loosely coupled Web services that are collaborating to perform aparticular task.

[0030] In the described implementation, the .NET™ platform utilizes XML(extensible markup language), an open standard for describing data. XMLis managed by the World Wide Web Consortium (W3C). XML is used fordefining data elements on a Web page and business-to-business documents.XML uses a similar tag structure as HTML; however, whereas HTML defineshow elements are displayed, XML defines what those elements contain.HTML uses predefined tags, but XML allows tags to be defined by thedeveloper of the page. Thus, virtually any data items can be identified,allowing Web pages to function like database records. Through the use ofXML and other open protocols, such as Simple Object Access Protocol(SOAP), the .NET™ platform allows integration of a wide range ofservices that can be tailored to the needs of the user. Although theembodiments described herein are described in conjunction with XML andother open standards, such are not required for the operation of theclaimed invention. Other equally viable technologies will suffice toimplement the inventions described herein.

[0031] As used herein, the phrase application program interface or APIincludes traditional interfaces that employ method or function calls, aswell as remote calls (e.g., a proxy, stub relationship) and SOAP/XMLinvocations.

[0032] Exemplary Network Environment

[0033]FIG. 1 shows a network environment 100 in which a networkplatform, such as the .NET™ platform, may be implemented. The networkenvironment 100 includes representative Web services 102(1), . . . ,102(N), which provide services that can be accessed over a network 104(e.g., Internet). The Web services, referenced generally as number 102,are programmable application components that are reusable and interactprogrammatically over the network 104, typically through industrystandard Web protocols, such as XML, SOAP, WAP (wireless applicationprotocol), HTTP (hypertext transport protocol), and SMTP (simple mailtransfer protocol) although other means of interacting with the Webservices over the network may also be used, such as Remote ProcedureCall (RPC) or object broker type technology. A Web service can beself-describing and is often defined in terms of formats and ordering ofmessages.

[0034] Web services 102 are accessible directly by other services (asrepresented by communication link 106) or a software application, suchas Web application 110 (as represented by communication links 112 and114). Each Web service 102 is illustrated as including one or moreservers that execute software to handle requests for particularservices. Such services often maintain databases that store informationto be served back to requesters. Web services may be configured toperform any one of a variety of different services. Examples of Webservices include login verification, notification, database storage,stock quoting, location directories, mapping, music, electronic wallet,calendar/scheduler, telephone listings, news and information, games,ticketing, and so on. The Web services can be combined with each otherand with other applications to build intelligent interactiveexperiences.

[0035] The network environment 100 also includes representative clientdevices 120(1), 120(2), 120(3), 120(4), . . . , 120(M) that utilize theWeb services 102 (as represented by communication link 122) and/or theWeb application 110 (as represented by communication links 124, 126, and128). The clients may communicate with one another using standardprotocols as well, as represented by an exemplary XML link 130 betweenclients 120(3) and 120(4).

[0036] The client devices, referenced generally as number 120, can beimplemented many different ways. Examples of possible clientimplementations include, without limitation, portable computers,stationary computers, tablet PCs, televisions/set-top boxes, wirelesscommunication devices, personal digital assistants, gaming consoles,printers, photocopiers, and other smart devices.

[0037] The Web application 110 is an application designed to run on thenetwork platform and may utilize the Web services 102 when handling andservicing requests from clients 120. The Web application 110 is composedof one or more software applications 130 that run atop a programmingframework 132, which are executing on one or more servers 134 or othercomputer systems. Note that a portion of Web application 110 mayactually reside on one or more of clients 120. Alternatively, Webapplication 110 may coordinate with other software on clients 120 toactually accomplish its tasks.

[0038] The programming framework 132 is the structure that supports theapplications and services developed by application developers. Itpermits multi-language development and seamless integration bysupporting multiple languages. It supports open protocols, such as SOAP,and encapsulates the underlying operating system and object modelservices. The framework provides a robust and secure executionenvironment for the multiple programming languages and offers secure,integrated class libraries.

[0039] The framework 132 is a multi-tiered architecture that includes anapplication program interface (API) layer 142, a common language runtime(CLR) layer 144, and an operating system/services layer 146. Thislayered architecture allows updates and modifications to various layerswithout impacting other portions of the framework. A common languagespecification (CLS) 140 allows designers of various languages to writecode that is able to access underlying library functionality. Thespecification 140 functions as a contract between language designers andlibrary designers that can be used to promote language interoperability.By adhering to the CLS, libraries written in one language can bedirectly accessible to code modules written in other languages toachieve seamless integration between code modules written in onelanguage and code modules written in another language. One exemplarydetailed implementation of a CLS is described in an ECMA standardcreated by participants in ECMA TC39/TG3. The reader is directed to theECMA web site at www.ecma.ch.

[0040] The API layer 142 presents groups of functions that theapplications 130 can call to access the resources and services providedby layer 146. By exposing the API functions for a network platform,application developers can create Web applications for distributedcomputing systems that make full use of the network resources and otherWeb services, without needing to understand the complex interworkings ofhow those network resources actually operate or are made available.Moreover, the Web applications can be written in any number ofprogramming languages, and translated into an intermediate languagesupported by the common language runtime 144 and included as part of thecommon language specification 140. In this way, the API layer 142 canprovide methods for a wide and diverse variety of applications.

[0041] Additionally, the framework 132 can be configured to support APIcalls placed by remote applications executing remotely from the servers134 that host the framework. Representative applications 148(1) and148(2) residing on clients 120(3) and 120(M), respectively, can use theAPI functions by making calls directly, or indirectly, to the API layer142 over the network 104.

[0042] The framework may also be implemented at the clients. Client120(3) represents the situation where a framework 150 is implemented atthe client. This framework may be identical to server-based framework132, or modified for client purposes. Alternatively, the client-basedframework may be condensed in the event that the client is a limited ordedicated function device, such as a cellular phone, personal digitalassistant, handheld computer, or other communication/computing device.

[0043] Developers' Programming Framework

[0044]FIG. 2 shows the programming framework 132 in more detail. Thecommon language specification (CLS) layer 140 supports applicationswritten in a variety of languages 130(1), 130(2), 130(3), 130(4), . . ., 130(K). Such application languages include Visual Basic, C++, C#,COBOL, Jscript, Perl, Eiffel, Python, and so on. The common languagespecification 140 specifies a subset of features or rules about featuresthat, if followed, allow the various languages to communicate. Forexample, some languages do not support a given type (e.g., an “int*”type) that might otherwise be supported by the common language runtime144. In this case, the common language specification 140 does notinclude the type. On the other hand, types that are supported by all ormost languages (e.g., the “int[ ]” type) is included in common languagespecification 140 so library developers are free to use it and areassured that the languages can handle it. This ability to communicateresults in seamless integration between code modules written in onelanguage and code modules written in another language. Since differentlanguages are particularly well suited to particular tasks, the seamlessintegration between languages allows a developer to select a particularlanguage for a particular code module with the ability to use that codemodule with modules written in different languages. The common languageruntime 144 allow seamless multi-language development, with crosslanguage inheritance, and provide a robust and secure executionenvironment for the multiple programming languages. For more informationon the common language specification 140 and the common language runtime144, the reader is directed to co-pending applications entitled “Methodand System for Compiling Multiple Languages”, filed Jun. 21, 2000 (Ser.No. 09/598,105) and “Unified Data Type System and Method” filed Jul. 10,2000 (Ser. No. 09/613,289), which are incorporated by reference.

[0045] The framework 132 encapsulates the operating system 146(1) (e.g.,Windows®-brand operating systems) and object model services 146(2)(e.g., Component Object Model (COM) or Distributed COM). The operatingsystem 146(1) provides conventional functions, such as file management,notification, event handling, user interfaces (e.g., windowing, menus,dialogs, etc.), security, authentication, verification, processes andthreads, memory management, and so on. The object model services 146(2)provide interfacing with other objects to perform various tasks. Callsmade to the API layer 142 are handed to the common language runtimelayer 144 for local execution by the operating system 146(1) and/orobject model services 146(2).

[0046] The API 142 groups API functions into multiple namespaces.Namespaces essentially define a collection of classes, interfaces,delegates, enumerations, and structures, which are collectively called“types”, that provide a specific set of related functionality. A classrepresents managed heap allocated data that has reference assignmentsemantics. A delegate is an object oriented function pointer. Anenumeration is a special kind of value type that represents namedconstants. A structure represents static allocated data that has valueassignment semantics. An interface defines a contract that other typescan implement.

[0047] By using namespaces, a designer can organize a set of types intoa hierarchical namespace. The designer is able to create multiple groupsfrom the set of types, with each group containing at least one type thatexposes logically related functionality. In the exemplaryimplementation, the API 142 is organized into four root namespaces: afirst namespace 200 for Web applications, a second namespace 202 forclient applications, a third namespace 204 for data and XML, and afourth namespace 206 for base class libraries (BCLs). Each group canthen be assigned a name. For instance, types in the Web applicationsnamespace 200 are assigned the name “Web”, and types in the data and XMLnamespace 204 can be assigned names “Data” and “XML” respectively. Thenamed groups can be organized under a single “global root” namespace forsystem level APIs, such as an overall System namespace. By selecting andprefixing a top level identifier, the types in each group can be easilyreferenced by a hierarchical name that includes the selected top levelidentifier prefixed to the name of the group containing the type. Forinstance, types in the Web applications namespace 200 can be referencedusing the hierarchical name “System.Web”. In this way, the individualnamespaces 200, 202, 204, and 206 become major branches off of theSystem namespace and can carry a designation where the individualnamespaces are prefixed with a designator, such as a “System.” prefix.

[0048] The Web applications namespace 200 pertains to Web basedfunctionality, such as dynamically generated Web pages (e.g.,Microsoft's Active Server Pages (ASP)). It supplies types that enablebrowser/server communication. The client applications namespace 202pertains to drawing and client side UI functionality. It supplies typesthat enable drawing of two-dimensional (2D), imaging, and printing, aswell as the ability to construct window forms, menus, boxes, and so on.

[0049] The data and XML namespace 204 relates to connectivity to datasources and XML functionality. It supplies classes, interfaces,delegates, and enumerations that enable security, specify data types,and serialize objects into XML format documents or streams. The baseclass libraries (BCL) namespace 206 pertains to basic system and runtimefunctionality. It contains the fundamental types and base classes thatdefine commonly-used value and reference data types, events and eventhandlers, interfaces, attributes, and processing exceptions.

[0050] In addition to the framework 132, programming tools 210 areprovided to assist the developer in building Web services and/orapplications. One example of the programming tools 200 is VisualStudio™, a multi-language suite of programming tools offered byMicrosoft Corporation.

[0051] Root API Namespaces

[0052]FIG. 3 shows the API 142 and its four root namespaces in moredetail. In one embodiment, the namespaces are identified according to ahierarchical naming convention in which strings of names areconcatenated with periods. For instance, the Web applications namespace200 is identified by the root name “System.Web”. Within the “Sytem.Web”namespace is another namespace for Web services, identified as“System.Web.Services”, which further identifies another namespace for adescription known as “System.Web.Services.Description”. With this namingconvention in mind, the ii following provides a general overview ofselected namespaces of the API 142, although other naming conventionscould be used with equal effect.

[0053] The Web applications namespace 200 (“System.Web”) definesadditional namespaces, including:

[0054] A services namespace 300 (“System.Web.Services”) containingclasses that enable a developer to build and use Web services. Theservices namespace 300 defines additional namespaces, including adescription namespace 302 (“System.Web.Services.Description”) containingclasses that enable a developer to publicly describe a Web service via aservice description language (such as WSDL, a specification availablefrom the W3C), a discovery namespace 304(“System.Web.Services.Discovery”) containing classes that allow Webservice consumers to locate available Web Services on a Web server, anda protocols namespace 306 (“System.Web.Services.Protocols”) containingclasses that define the protocols used to transmit data across a networkduring communication between Web service clients and the Web serviceitself.

[0055] A caching namespace 308 (“System.Web.Caching”) containing classesthat enable developers to decrease Web application response time throughtemporarily caching frequently used resources on the server. Thisincludes ASP.NET pages, web services, and user controls. (ASP.NET is theupdated version of Microsoft's ASP technology.) Additionally, a cachedictionary is available for developers to store frequently usedresources, such as hash tables and other data structures.

[0056] A configuration namespace 310 (“System.Web.Configuration”)containing classes that are used to read configuration data in for anapplication.

[0057] A UI namespace 312 (“System.Web.UI”) containing types that allowdevelopers to create controls and pages that will appear in Webapplications as user interfaces on a Web page. This namespace includesthe control class, which provides all web based controls, whether thoseencapsulating HTML elements, higher level Web controls, or even customUser controls, with a common set of functionality. Also provided areclasses which provide the web forms server controls data bindingfunctionality, the ability to save the view state of a given control orpage, as well as parsing functionality for both programmable and literalcontrols. Within the UI namespace 312 are two additional namespaces: anHTML controls namespace 314 (“System.Web.UI.HtmlControls”) containingclasses that permit developers to interact with types that encapsulateshtml 3.2 elemtents create HTML controls, and a Web controls namespace316 (“System.Web.UI.WebIControls”) containing classes that allowdevelopers to create higher level Web controls.

[0058] A security namespace 318 (“System.Web.Security”) containingclasses used to implement security in web server applications, such asbasic authentication, challenge response authentication, and role basedauthentication.

[0059] A session state namespace 320 (“System.Web.SessionState”)containing classes used to access session state values (i.e., data thatlives across requests for the lifetime of the session) as well assession-level settings and lifetime management methods.

[0060] The client applications namespace 202 is composed of twonamespaces:

[0061] A windows forms namespace 322 (“System.Windows.Forms”) containingclasses for creating Windows®-based client applications that take fulladvantage of the rich user interface features available in the MicrosoftWindows® operating system, such as the ability to drag and drop screenelements. Such classes may include wrapped APIs available in theMicrosoft Windows® operating system that are used in a windowing UIenvironment. Within this namespace are a design namespace 324(“System.Windows.Forms.Design”) that contains classes to extenddesign-time support for Windows forms and a component model namespace326 (“System.Windows.Forms.ComponentModel”) that contains the windowsform implementation of the general component model defined inSystem.ComponentModel. This namespace contains designer tools, such asVisual Studio, which offer a rich experience for developers at designtime.

[0062] A drawing namespace 328 (“System.Drawing”) containing classes forgraphics functionality. The drawing namespace 328 includes a 2D drawingnamespace 330 (“System.Drawing.Drawing2D”) that contains classes andenumerations to provide advanced 2-dimmensional and vector graphicsfunctionality, an imaging namespace 332 (“System.Drawing.Imaging”) thatcontains classes for advanced imaging functionality, a printingnamespace 334 (“System.Drawing.Printing”) that contains classes topermit developers to customize printing, and a text namespace 336(“System.Drawing.Text”) that contains classes for advanced typographyfunctionality.

[0063] The data and XML namespace 204 is composed of two namespaces:

[0064] A data namespace 340 (“System.Data”) containing classes thatenable developers to build components that efficiently manage data frommultiple data sources. It implements an architecture that, in adisconnected scenario (such as the Internet), provides tools to request,update, and reconcile data in multiple tier systems. The data namespace340 includes a common namespace 342 that contains types shared by dataproviders. A data provider describes a collection of types used toaccess a data source, such as a database, in the managed space. The datanamespace 340 also includes an OLE DB namespace 344 that contains typespertaining to data used in object-oriented databases (e.g., Microsoft'sSQL Server), and a SQL client namespace 346 that contains typespertaining to data used by SQL clients. The data namespace also includesa SQL types namespace 348 (“System.Data.SqlTypes”) that contains classesfor native data types within Microsoft's SQL Server. The classes providea safer, faster alternative to other data types. Using the objectswithin this namespace helps prevent type conversion errors caused insituations where loss of precision could occur. Because other data typesare converted to and from SQL types behind the scenes, explicitlycreating and using objects within this namespace results in faster codeas well.

[0065] An XML namespace 350 (“System.XML”) containing classes thatprovide standards-based support for processing XML. The supportedstandards include XML (e.g., version 1.0), XML Namespaces (both streamlevel and DOM), XML Schemas, XPath expressions, XSL/T transformations,DOM Level 2 Core, and SOAP (e.g., version 1.1). The XML namespace 350includes an XSLT namespace 352 (“System.XML.Xsl”) that contains classesand enumerations to support XSLT (Extensible Stylesheet LanguageTransformations), an Xpath namespace 354 (“System.XML.Xpath”) thatcontains an XPath parser and evaluation engine, and a serializationnamespace 356 (“System.XML.Serialization”) that contains classes used toserialize objects into XML format documents or streams.

[0066] The base class library namespace 206 (“System”) includes thefollowing namespaces:

[0067] A collections namespace 360 (“System.Collections”) containinginterfaces and classes that define various collections of objects, suchas lists, queues, arrays, hash tables and dictionaries.

[0068] A configuration namespace 362 (“System.Configuration”) containingclasses and interfaces that allow developers to programmatically accessconfiguration settings and handle errors in configuration files.

[0069] A diagnostics namespace 364 (“System.Diagnostics”) containingclasses that are used to debug applications and to trace code execution.The namespace allows developers to start system processes, read andwrite to event logs, and monitor system performance using performancecounters.

[0070] A globalization namespace 366 (“System.Globalization”) containingclasses that define culture-related information, including the language,the country/region, the calendars in use, the format patterns for dates,currency and numbers, and the sort order for strings.

[0071] An I/O namespace 368 (“System.IO”) containing the infrastructurepieces to operate with the intput/output of data streams, files, anddirectories. This namespace includes a model for working with streams ofbytes, higher level readers and writers which consume those bytes,various constructions or implementations of the streams (e.g.,FileStream and MemoryStream) and, a set of utility classes for workingwith files and directories.

[0072] A net namespace 370 (“System.Net”) providing an extensive set ofclasses for building network-enabled application, referred to as the NetClass Libraries (NCL). One element to the design of the Net ClassLibraries is an extensible, layered approach to exposing networkingfunctionality. The NCL stack contains three basic layers. A base layer(System.Net.Socket) provides access to an interface to TCP/IP, thecommunications protocol of UNIX networks and the Internet. One exampleof such an interface is the “WinSock API” from Microsoft Corporation.The next layer is the Transport Protocol classes, which support suchtransport protocols as TCP and UDP. Developers may write their ownprotocol classes to provide support for protocols such as IGMP and ICMP.The third layer is the Web request, which provides an abstract factorypattern for the creation of other protocol classes. The NCL providesimplementations for Hyper Text Transport Protocol (HTTP).

[0073] A reflection namespace (“System.Reflection”) 372 containing typesthat provide a managed view of loaded types, methods, and fields, withthe ability to dynamically create and invoke types.

[0074] A resources namespace 374 (“System.Resources”) containing classesand interfaces that allow developers to create, store and manage variousculture-specific resources used in an application.

[0075] A security namespace 376 (“System.Security”) supporting theunderlying structure of the security system, including interfaces,attributes, exceptions, and base classes for permissions.

[0076] A service process namespace 378 (“System.ServiceProcess”)containing classes that allow developers to install and run services.Services are long-running executables that run without a user interface.They can be installed to run under a system account that enables them tobe started at computer reboot. Services whose implementation is derivedfrom processing in one class can define specific behavior for start,stop, pause, and continue commands, as well as behavior to take when thesystem shuts down.

[0077] A text namespace 380 (“System.Text”) containing classesrepresenting various types of encodings (e.g., ASCII, Unicode, UTF-7,and UTF-8), abstract base classes for converting blocks of characters toand from blocks of bytes, and a helper class that manipulates andformats string objects without creating intermediate instances.

[0078] A threading namespace 382 (“System.Threading”) containing classesand interfaces that enable multi-threaded programming. The threadingnamespace includes a ThreadPool class that manages groups of threads, aTimer class that enables a delegate to be called after a specifiedamount of time, and a Mutex class for synchronizing mutually-exclusivethreads. This namespace also provides classes for thread scheduling,wait notification, and deadlock resolution.

[0079] A runtime namespace 384 (“System.Runtime”) containing multiplenamespaces concerning runtime features, including an interoperationservices namespace 386 (“System.Runtime.InteropServices”) that containsa collection of classes useful for accessing COM objects. The types inthe InteropServices namespace fall into the following areas offunctionality: attributes, exceptions, managed definitions of COM types,wrappers, type converters, and the Marshal class. The runtime namespace384 further includes a remoting namespace 388(“System.Runtime.Remoting”) that contains classes and interfacesallowing developers to create and configure distributed applications.Another namespace within the runtime namespace 384 is a serializationnamespace 390 (“System.Runtime.Serialization”) that contains classesused for serializing and deserializing objects. Serialization is theprocess of converting an object or a graph of objects into a linearsequence of bytes for either storage or transmission to anotherlocation.

[0080] Exemplary Computing System and Environment

[0081]FIG. 4 illustrates an example of a suitable computing environment400 within which the programming framework 132 may be implemented(either fully or partially). The computing environment 400 may beutilized in the computer and network architectures described herein.

[0082] The exemplary computing environment 400 is only one example of acomputing environment and is not intended to suggest any limitation asto the scope of use or functionality of the computer and networkarchitectures. Neither should the computing environment 400 beinterpreted as having any dependency or requirement relating to any oneor combination of components illustrated in the exemplary computingenvironment 400.

[0083] The framework 132 may be implemented with numerous other generalpurpose or special purpose computing system environments orconfigurations. Examples of well known computing systems, environments,and/or configurations that may be suitable for use include, but are notlimited to, personal computers, server computers, multiprocessorsystems, microprocessor-based systems, network PCs, minicomputers,mainframe computers, distributed computing environments that include anyof the above systems or devices, and so on. Compact or subset versionsof the framework may also be implemented in clients of limitedresources, such as cellular phones, personal digital assistants,handheld computers, or other communication/computing devices.

[0084] The framework 132 may be described in the general context ofcomputer-executable instructions, such as program modules, beingexecuted by one or more computers or other devices. Generally, programmodules include routines, programs, objects, components, datastructures, etc. that perform particular tasks or implement particularabstract data types. The framework 132 may also be practiced indistributed computing environments where tasks are performed by remoteprocessing devices that are linked through a communications network. Ina distributed computing environment, program modules may be located inboth local and remote computer storage media including memory storagedevices.

[0085] The computing environment 400 includes a general-purposecomputing device in the form of a computer 402. The components ofcomputer 402 can include, by are not limited to, one or more processorsor processing units 404, a system memory 406, and a system bus 408 thatcouples various system components including the processor 404 to thesystem memory 406.

[0086] The system bus 408 represents one or more of several possibletypes of bus structures, including a memory bus or memory controller, aperipheral bus, an accelerated graphics port, and a processor or localbus using any of a variety of bus architectures. By way of example, sucharchitectures can include an Industry Standard Architecture (ISA) bus, aMicro Channel Architecture (MCA) bus, an Enhanced ISA (EISA) bus, aVideo Electronics Standards Association (VESA) local bus, and aPeripheral Component Interconnects (PCI) bus also known as a Mezzaninebus.

[0087] Computer 402 typically includes a variety of computer readablemedia. Such media can be any available media that is accessible bycomputer 402 and includes both volatile and non-volatile media,removable and non-removable media.

[0088] The system memory 406 includes computer readable media in theform of volatile memory, such as random access memory (RAM) 410, and/ornon-volatile memory, such as read only memory (ROM) 412. A basicinput/output system (BIOS) 414, containing the basic routines that helpto transfer information between elements within computer 402, such asduring start-up, is stored in ROM 412. RAM 410 typically contains dataand/or program modules that are immediately accessible to and/orpresently operated on by the processing unit 404.

[0089] Computer 402 may also include other removable/non-removable,volatile/non-volatile computer storage media. By way of example, FIG. 4illustrates a hard disk drive 416 for reading from and writing to anon-removable, non-volatile magnetic media (not shown), a magnetic diskdrive 418 for reading from and writing to a removable, non-volatilemagnetic disk 420 (e.g., a “floppy disk”), and an optical disk drive 422for reading from and/or writing to a go removable, non-volatile opticaldisk 424 such as a CD-ROM, DVD-ROM, or other optical media. The harddisk drive 416, magnetic disk drive 418, and optical disk drive 422 areeach connected to the system bus 408 by one or more data mediainterfaces 426. Alternatively, the hard disk drive 416, magnetic diskdrive 418, and optical disk drive 422 can be connected to the system bus408 by one or more interfaces (not shown).

[0090] The disk drives and their associated computer-readable mediaprovide non-volatile storage of computer readable instructions, datastructures, program modules, and other data for computer 402. Althoughthe example illustrates a hard disk 416, a removable magnetic disk 420,and a removable optical disk 424, it is to be appreciated that othertypes of computer readable media which can store data that is accessibleby a computer, such as magnetic cassettes or other magnetic storagedevices, flash memory cards, CD-ROM, digital versatile disks (DVD) orother optical storage, random access memories (RAM), read only memories(ROM), electrically erasable programmable read-only memory (EEPROM), andthe like, can also be utilized to implement the exemplary computingsystem and environment.

[0091] Any number of program modules can be stored on the hard disk 416,magnetic disk 420, optical disk 424, ROM 412, and/or RAM 410, includingby way of example, an operating system 426, one or more applicationprograms 428, other program modules 430, and program data 432. Each ofthe operating system 426, one or more application programs 428, otherprogram modules 430, and program data 432 (or some combination thereof)may include elements of the programming framework 132.

[0092] A user can enter commands and information into computer 402 viainput devices such as a keyboard 434 and a pointing device 436 (e.g., a“mouse”). Other input devices 438 (not shown specifically) may include amicrophone, joystick, game pad, satellite dish, serial port, scanner,and/or the like. These and other input devices are connected to theprocessing unit 404 via input/output interfaces 440 that are coupled tothe system bus 408, but may be connected by other interface and busstructures, such as a parallel port, game port, or a universal serialbus (USB).

[0093] A monitor 442 or other type of display device can also beconnected to the system bus 408 via an interface, such as a videoadapter 444. In addition to the monitor 442, other output peripheraldevices can include components such as speakers (not shown) and aprinter 446 which can be connected to computer 402 via the input/outputinterfaces 440.

[0094] Computer 402 can operate in a networked environment using logicalconnections to one or more remote computers, such as a remote computingdevice 448. By way of example, the remote computing device 448 can be apersonal computer, portable computer, a server, a router, a networkcomputer, a peer device or other common network node, and so on. Theremote computing device 448 is illustrated as a portable computer thatcan include many or all of the elements and features described hereinrelative to computer 402.

[0095] Logical connections between computer 402 and the remote computer448 are depicted as a local area network (LAN) 450 and a general widearea network (WAN) 452. Such networking environments are commonplace inoffices, enterprise-wide computer networks, intranets, and the Internet.

[0096] When implemented in a LAN networking environment, the computer402 is connected to a local network 450 via a network interface oradapter 454. When implemented in a WAN networking environment, thecomputer 402 typically includes a modem 456 or other means forestablishing communications over the wide network 452. The modem 456,which can be internal or external to computer 402, can be connected tothe system bus 408 via the input/output interfaces 440 or otherappropriate mechanisms. It is to be appreciated that the illustratednetwork connections are exemplary and that other means of establishingcommunication link(s) between the computers 402 and 448 can be employed.

[0097] In a networked environment, such as that illustrated withcomputing environment 400, program modules depicted relative to thecomputer 402, or portions thereof, may be stored in a remote memorystorage device. By way of example, remote application programs 458reside on a memory device of remote computer 448. For purposes ofillustration, application programs and other executable programcomponents such as the operating system are illustrated herein asdiscrete blocks, although it is recognized that such programs andcomponents reside at various times in different storage components ofthe computing device 402, and are executed by the data processor(s) ofthe computer.

[0098] An implementation of the framework 132, and particularly, the API142 or calls made to the API 142, may be stored on or transmitted acrosssome form of computer readable media. Computer readable media can be anyavailable media that can be accessed by a computer. By way of example,and not limitation, computer readable media may comprise “computerstorage media” and “communications media.” “Computer storage media”include volatile and non-volatile, removable and non-removable mediaimplemented in any method or technology for storage of information suchas computer readable instructions, data structures, program modules, orother data. Computer storage media includes, but is not limited to, RAM,ROM, EEPROM, flash memory or other memory technology, CD-ROM, digitalversatile disks (DVD) or other optical storage, magnetic cassettes,magnetic tape, magnetic disk storage or other magnetic storage devices,or any other medium which can be used to store the desired informationand which can be accessed by a computer.

[0099] “Communication media” typically embodies computer readableinstructions, data structures, program modules, or other data in amodulated data signal, such as carrier wave or other transportmechanism. Communication media also includes any information deliverymedia. The term “modulated data signal” means a signal that has one ormore of its characteristics set or changed in such a manner as to encodeinformation in the signal. By way of example, and not limitation,communication media includes wired media such as a wired network ordirect-wired connection, and wireless media such as acoustic, RF,infrared, and other wireless media. Combinations of any of the above arealso included within the scope of computer readable media.

[0100] Alternatively, portions of the framework may be implemented inhardware or a combination of hardware, software, and/or firmware. Forexample, one or more application specific integrated circuits (ASICs) orprogrammable logic devices (PLDs) could be designed or programmed toimplement one or more portions of the framework.

CONCLUSION

[0101] Although the invention has been described in language specific tostructural ii features and/or methodological acts, it is to beunderstood that the invention defined in the appended claims is notnecessarily limited to the specific features or acts described. Rather,the specific features and acts are disclosed as exemplary forms ofimplementing the claimed invention.

1. A software architecture for a distributed computing systemcomprising: an application configured to handle requests submitted byremote devices over a network; and an application program interface topresent functions used by the application to access network andcomputing resources of the distributed computing system.
 2. A softwarearchitecture as recited in claim 1, wherein the distributed computingsystem comprises client devices and server devices that handle requestsfrom the client devices, the remote devices comprising at least oneclient device.
 3. A software architecture as recited in claim 1, whereinthe distributed computing system comprises client devices and serverdevices that handle requests from the client devices, the remote devicescomprising at least one server device that is configured as a Webserver.
 4. A software architecture as recited in claim 1, wherein theapplication program interface comprises: a first group of servicesrelated to creating Web applications; a second group of services relatedto constructing client applications; a third group of services relatedto data and handling XML documents; and a fourth group of servicesrelated to base class libraries.
 5. An application program interfaceembodied on one or more computer readable media, comprising: a firstgroup of services related to creating Web applications; a second groupof services related to constructing client applications; a third groupof services related to data and handling XML documents; and a fourthgroup of services related to base class libraries.
 6. An applicationprogram interface as recited in claim 5, wherein the first group ofservices comprises: first functions that enable construction and use ofWeb services; second functions that enable temporary caching offrequently used resources; third functions that enable initialconfiguration; fourth functions that enable creation of controls and Webpages; fifth functions that enable security in Web server applications;and sixth functions that enable access to session state values.
 7. Anapplication program interface as recited in claim 5, wherein the secondgroup of services comprises: first functions that enable creation ofwindowing graphical user interface environments; and second functionsthat enable graphical functionality.
 8. An application program interfaceas recited in claim 5, wherein the third group of services comprises:first functions that enable management of data from multiple datasources; and second functions that enable XML processing.
 9. Anapplication program interface as recited in claim 5, wherein the fourthgroup of services comprises: first functions that enable definitions ofvarious collections of objects; second functions that enableprogrammatic access to configuration settings and handling of errors inconfiguration files; third functions that enable application debuggingand code execution tracing; fourth functions that enable customizationof data according to cultural s5 related information; fifth functionsthat enable input/output of data; sixth functions that enable aprogramming interface to network protocols; seventh functions thatenable a managed view of types, methods, and fields; eighth functionsthat enable creation, storage and management of various culture-specificresources; ninth functions that enable system security and permissions;tenth functions that enable installation and running of services;eleventh functions that enable character encoding; twelfth functionsthat enable multi-threaded programming; and thirteenth functions thatfacilitate runtime operations.
 10. A network software architecturecomprising the application program interface as recited in claim
 5. 11.A distributed computer software architecture, comprising: one or moreapplications configured to be executed on one or more computing devices,the applications handling requests submitted from remote computingdevices; a networking platform to support the one or more applications;and an application programming interface to interface the one or moreapplications with the networking platform.
 12. A distributed computersoftware architecture as recited in claim 11, further comprising aremote application configured to be executed on one of the remotecomputing devices, the remote application using the applicationprogramming interface to access the networking platform.
 13. Adistributed computer software architecture as recited in claim 11,wherein the application programming interface comprises: a first groupof services related to creating Web applications; a second group ofservices related to constructing client applications; a third group ofservices related to data and handling XML documents; and a fourth groupof services related to base class libraries.
 14. A distributed computersoftware architecture as recited in claim 11, wherein the applicationprogramming interface exposes multiple functions comprising: firstfunctions that enable construction and use of Web services; secondfunctions that enable temporary caching of frequently used resources;third functions that enable initial configuration; fourth functions thatenable creation of controls and Web pages; fifth functions that enablesecurity in Web server applications; and sixth functions that enableaccess to session state values.
 15. A distributed computer softwarearchitecture as recited in claim 11, wherein the application programminginterface exposes multiple functions comprising: first functions thatenable creation of windowing graphical user interface environments; andsecond functions that enable graphical functionality.
 16. A distributedcomputer software architecture as recited in claim 11, wherein theapplication programming interface exposes multiple functions comprising:first functions that enable management of data from multiple datasources; and second functions that enable XML processing.
 17. Adistributed computer software architecture as recited in claim 11,wherein the application programming interface exposes multiple functionscomprising: first functions that enable definitions of variouscollections of objects; second functions that enable programmatic accessto configuration settings and handling of errors in configuration files;third functions that enable application debugging and code executiontracing; fourth functions that enable customization of data according tocultural related information; fifth functions that enable input/outputof data; sixth functions that enable a programming interface to networkprotocols; seventh functions that enable a managed view of loaded types,methods, and fields; eighth functions that enable creation, storage andmanagement of various culture-specific resources; ninth functions thatenable system security and permissions; tenth functions that enableinstallation and running of services; eleventh functions that enablecharacter encoding; twelfth functions that enable multi-threadedprogramming; and thirteenth functions that facilitate runtimeoperations.
 18. A computer system including one or more microprocessorsand one or more software programs, the one or more software programsutilizing an application program interface to request services from anoperating system, the application program interface including separatecommands to request services consisting of the following groups ofservices: A. a first group of services related to creating Webapplications: constructing Web services; temporary caching resources;performing initial configuration; creating controls and Web pages;enabling security in Web server applications; accessing session statevalues; B. a second group of services related to constructing clientapplications: creating windowing graphical user interface environments;enabling graphical functionality; C. a third group of services relatedto data and handling XML documents: enabling management of data frommultiple data sources; second functions that enable XML processing. D. afourth group of services related to base class libraries: definingvarious collections of objects; accessing configuration settings andhandling errors in configuration files; debugging and tracing codeexecution; customizing data according to cultural related information;inputting and outputting of data; enabling a programming interface tonetwork protocols; viewing loaded types, methods, and fields; creating,storing and managing various culture-specific resources; enabling systemsecurity and permissions; installing and running services; enablingcharacter encoding; enabling multi-threaded programming; andfacilitating runtime operations.
 19. A system comprising: means forexposing a first set of functions that enable browser/servercommunication; means for exposing a second set of functions that enabledrawing and construction of client applications; means for exposing athird set of functions that enable connectivity to data sources and XMLfunctionality; and means for exposing a fourth set of functions thatenable system and runtime functionality.
 20. A system as recited inclaim 19, wherein the first set of functions comprises: first functionsthat enable construction and use of Web services; second functions thatenable temporary caching of frequently used resources; third functionsthat enable initial configuration; fourth functions that enable creationof controls and Web pages; fifth functions that enable security in Webserver applications; and sixth functions that enable access to sessionstate values.
 21. A system as recited in claim 19, wherein the secondset of functions comprises: first functions that enable creation ofwindowing graphical user interface environments; and second functionsthat enable graphical functionality.
 22. A system as recited in claim19, wherein the third set of functions comprises: first functions thatenable management of data from multiple data sources; and secondfunctions that enable XML processing.
 23. A system as recited in claim19, wherein the fourth set of functions comprises: first functions thatenable definitions of various collections of objects; second functionsthat enable programmatic access to configuration settings and handlingof errors in configuration files; third functions that enableapplication debugging and code execution tracing; fourth functions thatenable customization of data according to cultural related information;fifth functions that enable input/output of data; sixth functions thatenable a programming interface to network protocols; seventh functionsthat enable a managed view of loaded types, methods, and fields; eighthfunctions that enable creation, storage and management of variousculture-specific resources; ninth functions that enable system securityand permissions; tenth functions that enable installation and running ofservices; eleventh functions that enable character encoding; twelfthfunctions that enable multi-threaded programming; and thirteenthfunctions that facilitate runtime operations.
 24. A method, comprising:managing network and computing resources for a distributed computingsystem; and exposing a set of functions that enable developers to accessthe network and computing resources of the distributed computing system,the set of functions comprising first functions to facilitatebrowser/server communication, second functions to facilitateconstruction of client applications, third functions to facilitateconnectivity to data sources and XML functionality, and fourth functionsto access system and runtime resources.
 25. A method as recited in claim24, further comprising receiving a request from a remote computingdevice, the request containing a call to at least one of the first,second, third, and fourth functions.
 26. A method, comprising: creatinga first namespace with functions that enable browser/servercommunication; creating a second namespace with functions that enabledrawing and construction of client applications; creating a thirdnamespace with functions that enable connectivity to data sources andXML functionality; and creating a fourth namespace with functions thatenable system and runtime functionality.
 27. A method as recited inclaim 26, wherein the first namespace defines classes that facilitate:construction and use of Web services; temporary caching of resources;initial configuration; creation of controls and Web pages; security inWeb server applications; and access to session state values.
 28. Amethod as recited in claim 26, wherein the second namespace definesclasses that facilitate: creation of windowing graphical user interfaceenvironments; and graphical functionality.
 29. A method as recited inclaim 26, wherein the third namespace defines classes that facilitate:management of data from multiple data sources; and processing of XMLdocuments.
 30. A method as recited in claim 26, wherein the fourthnamespace defines classes that facilitate: programmatic access toconfiguration settings and handling of errors in configuration files;application debugging and code execution tracing; customization of dataaccording to cultural related information; inputting and outputting ofdata; interfacing to network protocols; viewing loaded types, methods,and fields; creation, storage and management of various culture-specificresources; system security and permissions; installation and running ofservices; character encoding; multi-threaded programming; and runtimeoperations.
 31. A method, comprising: calling one or more firstfunctions to facilitate browser/server communication; calling one ormore second functions to facilitate construction of client applications;calling one or more third functions to facilitate connectivity to datasources and XML functionality; and calling one or more fourth functionsto access system and runtime resources.
 32. A method as recited in claim36, wherein the first functions comprise functions for construction anduse of Web services, temporary caching of resources, initialconfiguration, creation of controls and pages that will appear as userinterfaces, securing Web server applications, and accessing sessionstate values.
 33. A method as recited in claim 36, wherein the secondfunctions comprise functions for creation of windowing graphical userinterface environments, and graphical functionality.
 34. A method asrecited in claim 36, wherein the third functions comprise functions formanagement of data from multiple data sources, and XML processing.
 35. Amethod as recited in claim 36, wherein the fourth functions comprisefunctions for programmatic access to configuration settings, applicationdebugging and code execution tracing, customization of text according tocultural related information, synchronous and asynchronous reading fromand writing to data streams and files, creation and management ofvarious culture-specific resources, system security and permissions,installation and running of services, character encoding, andmulti-threaded programming.
 36. A method, comprising: receiving one ormore calls to one or more first functions to facilitate browser/servercommunication; receiving one or more calls to one or more secondfunctions to facilitate construction of client applications; receivingone or more calls to one or more third functions to facilitateconnectivity to data sources and XML functionality; and receiving one ormore calls to one or more fourth functions to access system and runtimeresources.
 37. A method as recited in claim 31, wherein the firstfunctions comprise functions for construction and use of Web services,temporary caching of resources, initial configuration, creation ofcontrols and pages that will appear as user interfaces, securing Webserver applications, and accessing session state values.
 38. A method asrecited in claim 31, wherein the second functions comprise functions forcreation of windowing graphical user interface environments, andgraphical functionality.
 39. A method as recited in claim 31, whereinthe third functions comprise functions for management of data frommultiple data sources, and XML processing.
 40. A method as recited inclaim 31, wherein the fourth functions comprise functions forprogrammatic access to configuration settings, application debugging andcode execution tracing, customization of text according to culturalrelated information, synchronous and asynchronous reading from andwriting to data streams and files, creation and management of variousculture-specific resources, system security and permissions,installation and running of services, character encoding, andmulti-threaded programming.
 41. A method for exposing resources using anapplication program interface, comprising: A. exposing a first group ofservices related to creating Web applications, including: constructingWeb services; temporary caching resources; performing initialconfiguration; creating controls and Web pages; enabling security in Webserver applications; accessing session state values; B. exposing asecond group of services related to constructing client applications,including: creating windowing graphical user interface environments;enabling graphical functionality; C. exposing a third group of servicesrelated to data and handling XML documents, including: enablingmanagement of data from multiple data sources; second functions thatenable XML processing. D. exposing a fourth group of services related tobase class libraries, including: defining various collections ofobjects; accessing configuration settings and handling errors inconfiguration files; debugging and tracing code execution; customizingdata according to cultural related information; inputting and outputtingof data; enabling a programming interface to network protocols; viewingloaded types, methods, and fields; creating, storing and managingvarious culture-specific resources; enabling system security andpermissions; installing and running services; enabling characterencoding; enabling multi-threaded programming; and facilitating runtimeoperations.
 42. A method of organizing a set of types into ahierarchical namespace comprising: creating a plurality of groups fromthe set of types, each group containing at least one type that exposeslogically related functionality; assigning a name to each group in theplurality; and selecting a top level identifier and prefixing the nameof each group with the top level identifier so that the types in eachgroup are referenced by a hierarchical name that includes the selectedtop level identifier prefixed to the name of the group containing thetype.
 43. A system comprising: a set of types, each type comprising oneof a delegate, an enumeration, an interface, a class, and a structure;and a namespace defined by the set of types to provide access tologically related functionality of a computing system.